﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Services;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.Pages
{
    public partial class SupplierConsulta : System.Web.UI.Page
    {

        public Int32 Sid;
        public string Snome;

        protected void Page_Load(object sender, EventArgs e)
        {
            //Verificar se a página está sendo aberta pela 1º vez
            if (!IsPostBack)
            {
                //Session["Sid"] = "60299";
                //Session.Abandon();
                Session.Remove("IDsFiltroStatus");
                Session.Remove("IDsFiltroTipoSupplier");
                Session["TipoPesquisaSupplier"] = 0;
                PopularDrops();
                TabInfos.Enabled = false;
            }
        }

        #region Popula Dados Supplier

        protected void CarregarSuppliersPorStatus(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();
                List<Supplier> dados = d.FindAllStatus(Convert.ToInt32(DDStatusFiltro.SelectedValue));

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void CarregarSuppliersPorTipo(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();
                List<Supplier> dados = d.FindAllTipo(Convert.ToInt32(DDTipoSupFiltro.SelectedValue));
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void CarregarSuppliersNome(object sender, EventArgs e)
        {
            try
            {
                SupplierDAL d = new SupplierDAL();
                Supplier dados = d.FindAllNome(txtSupplier.Text);

                BuscaSupplier(sender, e, dados);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        #endregion

        #region Popula Dados Grid Periodos

        protected void CarregarDadosPeriodos(object sender, EventArgs e)
        {
            CarregarPeriodos(sender, e);
        }

        protected void CarregarPeriodos(object sender, EventArgs e)
        {
            try
            {
                PeriodosDAL p = new PeriodosDAL();
                GridTarifasPeriodo.DataSource = p.ListarTodos(Convert.ToInt32(Session["Sid"]), Convert.ToInt32(DropMercados.SelectedValue), Convert.ToInt32(DropBaseTarifarias.SelectedValue));
                GridTarifasPeriodo.DataBind(); //Desenhar

                if (GridTarifasPeriodo.PageCount > 0)
                {
                    Session["PeriodoIDTarifas"] = GridTarifasPeriodo.Rows[0].Cells[0].Text;
                }
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void PaginarDadosPeriodos(object sender, GridViewPageEventArgs e)
        {
            GridTarifasPeriodo.PageIndex = e.NewPageIndex;
            CarregarDadosPeriodos(sender, e); 
        }

        #endregion

        #region Popula Dados Grid Periodos Blackout

        protected void CarregarDadosPeriodosBlackout(object sender, EventArgs e)
        {
            CarregarPeriodosBlackout(sender, e);
        }

        protected void CarregarPeriodosBlackout(object sender, EventArgs e)
        {
            try
            {
                PeriodoBlackDAL pb = new PeriodoBlackDAL();
                GridTarifasPeriodoBlack.DataSource = pb.ListarTodos(Convert.ToInt32(Session["Sid"]), Convert.ToInt32(DropMercados.SelectedValue), Convert.ToInt32(DropBaseTarifarias.SelectedValue));
                GridTarifasPeriodoBlack.DataBind(); //Desenhar
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

        protected void PaginarDadosPeriodosBlackout(object sender, GridViewPageEventArgs e)
        {
            //Realiza a paginação
            GridTarifasPeriodoBlack.PageIndex = e.NewPageIndex;
            CarregarDadosPeriodosBlackout(sender, e); //Atualizar os dados do GridView
        }

        #endregion

        #region Popula Dados Drops

        protected void PopularDrops()
        {
            PopulaDropMercado();
            PopulaDropRede();
            PopulaDropClassificacao();
            PopulaDropPais();
            PopulaDropCidade();
            PopulaDropStatus();
            PopulaDropTipoSupplier();
            PopulaDropStatusFiltro();
            PopulaDropTipoSupFiltro();
            PopulaDropBaseTarifaria();
            PopulaDropCidadeFiltroSupFiltro();
        }

        void PopulaDropRede()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDRede.DataSource = n.S_Rede.ToList();
                    DDRede.DataValueField = "Rede_id";
                    DDRede.DataTextField = "Rede_Nome";
                    DDRede.DataBind();

                } 
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropStatus()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDStatus.DataSource = n.S_Status.ToList();
                    DDStatus.DataValueField = "STATUS_id";
                    DDStatus.DataTextField = "STATUS_nome";
                    DDStatus.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropTipoSupplier()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDTipoSup.DataSource = n.TipoSupls.ToList();
                    DDTipoSup.DataValueField = "TIPOSUPL_id";
                    DDTipoSup.DataTextField = "TIPOSUPL_nome";
                    DDTipoSup.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropClassificacao()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDClassificacao.DataSource = n.S_Categoria.ToList();
                    DDClassificacao.DataValueField = "Categ_id";
                    DDClassificacao.DataTextField = "Categ_classificacao";
                    DDClassificacao.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropPais()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDPais.DataSource = n.Pais.ToList();
                    DDPais.DataValueField = "PAIS_id";
                    DDPais.DataTextField = "PAIS_nome";
                    DDPais.DataBind();
                    PopulaDropCidade();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        protected void DDPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            PopulaDropCidade();
        }

        void PopulaDropCidade()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    int idPais = Convert.ToInt32(DDPais.SelectedValue);
                    DDCidade.DataSource = n.Cidades.Where(c => c.PAIS_id == idPais).OrderBy(c => c.CID_nome).ToList();
                    DDCidade.DataValueField = "CID_id";
                    DDCidade.DataTextField = "CID_nome";
                    DDCidade.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropStatusFiltro()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDStatusFiltro.DataSource = n.S_Status.ToList();
                    DDStatusFiltro.DataValueField = "STATUS_id";
                    DDStatusFiltro.DataTextField = "STATUS_nome";
                    DDStatusFiltro.DataBind();

                    DDStatusFiltro.Items.Insert(0, new ListItem("Todos", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropTipoSupFiltro()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DDTipoSupFiltro.DataSource = n.TipoSupls.ToList();
                    DDTipoSupFiltro.DataValueField = "TIPOSUPL_id";
                    DDTipoSupFiltro.DataTextField = "TIPOSUPL_nome";
                    DDTipoSupFiltro.DataBind();

                    DDTipoSupFiltro.Items.Insert(0, new ListItem("Todos", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropCidadeFiltroSupFiltro()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    ddlCidadeFiltro.DataSource = n.Cidades.OrderBy(c => c.CID_nome).ToList();
                    ddlCidadeFiltro.DataValueField = "CID_id";
                    ddlCidadeFiltro.DataTextField = "CID_nome";
                    ddlCidadeFiltro.DataBind();

                    ddlCidadeFiltro.Items.Insert(0, new ListItem("Todas", "0"));
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropMercado()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DropMercados.DataSource = n.Mercadoes.ToList();
                    DropMercados.DataValueField = "Mercado_id";
                    DropMercados.DataTextField = "Mercado_nome";
                    DropMercados.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        void PopulaDropBaseTarifaria()
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DropBaseTarifarias.DataSource = n.BaseTarifarias.ToList();
                    DropBaseTarifarias.DataValueField = "BaseTarifaria_id";
                    DropBaseTarifarias.DataTextField = "BaseTarifaria_nome";
                    DropBaseTarifarias.DataBind();
                }
                

            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro. " + ex.Message;
            }
        }

        #endregion

        #region CRUD Supplier

        protected void CadastrarSupplier(object sender, EventArgs e)
        {
            SupplierDAL d = new SupplierDAL();

            if (txtCodigo.Text != "")
            {
                LimpaCampos(this.Controls);
                lblMsgCadSupplier.Text = "";
                btnNovoSupplier.Text = "Salvar";
                PanelTarifas.Visible = false;
                TabInfos.Enabled = false;
                Session.Abandon();
                txtNome.Focus();
                return;
            }

            if (d.ObterPorNome(txtNome.Text))
            {
                lblMsgCadSupplier.Text = "Já existe supplier cadastrado com esse nome, tente outro.";
                return;
            }

            try
            {
                Supplier s = new Supplier();

                s.S_nome = txtNome.Text;
                s.S_razaosocial = txtRazaoSocial.Text;
                s.S_cnpj = txtCnpjCpf.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_teleplantao = txtTelefonePL.Text;
                s.S_telefone = txtTelefone.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_http = txtSite.Text;
                s.S_email = txtEmail.Text;
                s.STATUS_id = Convert.ToInt32(DDStatus.SelectedValue);
                s.TIPOSUPL_id = Convert.ToInt32(DDTipoSup.SelectedValue);
                s.CID_id = Convert.ToInt32(DDCidade.SelectedValue);
                s.PAIS_id = Convert.ToInt32(DDPais.SelectedValue);
                s.Categ_id = Convert.ToInt32(DDClassificacao.SelectedValue);
                s.Rede_id = Convert.ToInt32(DDRede.SelectedValue);

                d.Salvar(s);
                lblMsgCadSupplier.Text = "Cadastrado efetuado com sucesso.";
                LimpaCampos(this.Controls);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        protected void ExcluirSupplier(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text == "")
                {
                    lblMsgCadSupplier.Text = "Selecione um supplier para ser excluído.";
                    return;
                }

                if (!ExcluiFotoPasta())
                {
                    lblMsgCadSupplier.Text = "Não foi possível deletar as fotos na pasta 'Galeria' por favor tente novamente.";
                    return;
                }

                int IdSupplier = Convert.ToInt32(txtCodigo.Text);

                SupplierDAL d = new SupplierDAL();

                Supplier s = d.ObterPorId(IdSupplier);
                d.Excluir(s);
                Session.Abandon();
                PanelTarifas.Visible = false;
                LimpaCampos(this.Controls);
                btnNovoSupplier.Text = "Salvar";
                TabInfos.Enabled = false;
                lblMsgCadSupplier.Text = "Supplier excluído com sucesso.";
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        public bool ExcluiFotoPasta()
        {
            try
            {
                FotoDAL f = new FotoDAL();

                //string path = "~/Galeria/" + Session["Sid"];
                //System.IO.File.Delete(Server.MapPath(path));

                foreach (S_Image p in f.ListarTodosLista(Convert.ToInt32(txtCodigo.Text)))
                {
                    string path = "~/Galeria/" + Session["Sid"] + "/" + p.Image_nome;
                    System.IO.File.Delete(Server.MapPath(path));
                }
                return true;
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
                return false;
            }
        }

        protected void AtualizarSupplier(object sender, EventArgs e)
        {
            try
            {
                if (txtCodigo.Text == "")
                {
                    lblMsgCadSupplier.Text = "Selecione um supplier para ser atualizado.";
                    return;
                }

                Supplier s = new Supplier();

                s.S_id = Convert.ToInt32(txtCodigo.Text);
                s.S_nome = txtNome.Text;
                s.S_razaosocial = txtRazaoSocial.Text;
                s.S_cnpj = txtCnpjCpf.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_teleplantao = txtTelefonePL.Text;
                s.S_telefone = txtTelefone.Text;
                s.S_endereco = txtEndereco.Text;
                s.S_http = txtSite.Text;
                s.S_email = txtEmail.Text;
                s.STATUS_id = Convert.ToInt32(DDStatus.SelectedValue);
                s.TIPOSUPL_id = Convert.ToInt32(DDTipoSup.SelectedValue);
                s.CID_id = Convert.ToInt32(DDCidade.SelectedValue);
                s.PAIS_id = Convert.ToInt32(DDPais.SelectedValue);
                s.Categ_id = Convert.ToInt32(DDClassificacao.SelectedValue);
                s.Rede_id = Convert.ToInt32(DDRede.SelectedValue);

                SupplierDAL d = new SupplierDAL();
                d.Atualizar(s);
                lblMsgCadSupplier.Text = "Registro atualizado com sucesso.";
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }
        }

        #endregion

        #region Regras

        [WebMethod]
        public static List<string> SearchSuppliers(string prefixText, int count)
        {
            using (NewTierraEntities Con = new NewTierraEntities())
            {
                int idStatus = Convert.ToInt32(HttpContext.Current.Session["IDsFiltroStatus"]);
                int idTipoSupplier = Convert.ToInt32(HttpContext.Current.Session["IDsFiltroTipoSupplier"]);
                int TipoPesquisa = Convert.ToInt32(HttpContext.Current.Session["TipoPesquisaSupplier"]);
                int idCidade = Convert.ToInt32(HttpContext.Current.Session["IDsFiltroCidadeSupplier"]);

                List<Supplier> s = new List<Supplier>();

                if (TipoPesquisa == 0)
                {
                    if (idTipoSupplier > 0 && idStatus > 0 && idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText)
                                            && p.TIPOSUPL_id == idTipoSupplier
                                            && p.STATUS_id == idStatus
                                            && p.CID_id == idCidade).ToList();
                    }
                    else if (idTipoSupplier > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier).ToList();
                    }
                    else if (idStatus > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.STATUS_id == idStatus).ToList();
                    }
                    else if (idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText) && p.CID_id == idCidade).ToList();
                    }
                    else
                    {
                        s = Con.Suppliers.Where(p => p.S_nome.Contains(prefixText)).ToList();
                    }
                }
                else
                {
                    if (idTipoSupplier > 0 && idStatus > 0 && idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText)
                                            && p.TIPOSUPL_id == idTipoSupplier
                                            && p.STATUS_id == idStatus
                                            && p.CID_id == idCidade).ToList();
                    }
                    else if (idTipoSupplier > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.TIPOSUPL_id == idTipoSupplier).ToList();
                    }
                    else if (idStatus > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.STATUS_id == idStatus).ToList();
                    }
                    else if (idCidade > 0)
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText) && p.CID_id == idCidade).ToList();
                    }
                    else
                    {
                        s = Con.Suppliers.Where(p => p.S_endereco.Contains(prefixText)).ToList();
                    }
                }


                List<string> lista = new List<string>();

                foreach (Supplier p in s)
                {
                    lista.Add(p.S_nome);
                }

                return lista;
            }
        }

        protected void BuscaSupplier(object sender, EventArgs e, Supplier s)
        {
            lblMsgCadSupplier.Text = "";

            try
            {
                SupplierDAL d = new SupplierDAL();

                Session["Sid"] = s.S_id;
                Session["Snome"] = s.S_nome;
                PanelTarifas.Visible = true;

                Session.Remove("DescricaoID");
                Session.Remove("PeriodoIDTarifas");
                Buscadescricao();
                CarregarDadosPeriodos(sender, e);
                CarregarDadosPeriodosBlackout(sender, e);
                TabInfos.Enabled = true;
                txtSupplier.Text = "";
                btnNovoSupplier.Text = "Novo";

                lblTituloNomeSupplier.Text = s.S_nome;
                txtCodigo.Text = Convert.ToString(s.S_id);
                txtNome.Text = s.S_nome;
                txtRazaoSocial.Text = s.S_razaosocial;
                txtCnpjCpf.Text = s.S_cnpj;
                txtEndereco.Text = s.S_endereco;
                txtTelefonePL.Text = s.S_teleplantao;
                txtTelefone.Text = s.S_telefone;
                txtEndereco.Text = s.S_endereco;
                txtSite.Text = s.S_http;
                txtEmail.Text = s.S_email;
                DDStatus.SelectedValue = Convert.ToString(s.STATUS_id);
                DDTipoSup.SelectedValue = Convert.ToString(s.TIPOSUPL_id);
                DDPais.SelectedValue = Convert.ToString(s.PAIS_id);
                PopulaDropCidade();
                DDCidade.SelectedValue = Convert.ToString(s.CID_id);
                DDClassificacao.SelectedValue = Convert.ToString(s.Categ_id);
                DDRede.SelectedValue = Convert.ToString(s.Rede_id);
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = "Erro: " + ex.Message;
            }
        }

        protected void LimpaCampos(ControlCollection controls)
        {
            foreach (Control ctrl in controls)
            {
                if (ctrl is TextBox)
                {
                    (ctrl as TextBox).Text = string.Empty;
                }
                // ... demais controles que queira limpar

                LimpaCampos(ctrl.Controls);
            }
        }

        protected void DDStatusFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDStatusFiltro.SelectedValue.Equals("0"))
            {
                Session["IDsFiltroStatus"] = 0;
            }
            else
            {
                Session["IDsFiltroStatus"] = DDStatusFiltro.SelectedValue;
            }
        }

        protected void DDTipoSupFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDTipoSupFiltro.SelectedValue.Equals("0"))
            {
                Session["IDsFiltroTipoSupplier"] = 0;
            }
            else
            {
                Session["IDsFiltroTipoSupplier"] = DDTipoSupFiltro.SelectedValue;
            }
        }

        protected void ddlCidadeFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCidadeFiltro.SelectedValue.Equals("0"))
            {
                Session["IDsFiltroCidadeSupplier"] = 0;
            }
            else
            {
                Session["IDsFiltroCidadeSupplier"] = ddlCidadeFiltro.SelectedValue;
            }
        }

        protected void btnLimparSupplier_Click(object sender, EventArgs e)
        {
            //LimpaCampos(Controls);
            Session.Abandon();
            Response.Redirect("SupplierConsulta.aspx");
        }

        protected void DropMercados_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosPeriodos(sender, e);
            CarregarDadosPeriodosBlackout(sender, e);
            Session.Remove("PeriodoIDTarifas");
            //CarregarDadosTarifas(sender, e);
            //CarregarDadosMeal(sender, e);
        }

        protected void DropBaseTarifarias_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregarDadosPeriodos(sender, e);
            CarregarDadosPeriodosBlackout(sender, e);
            Session.Remove("PeriodoIDTarifas");
            //CarregarDadosTarifas(sender, e);
            //CarregarDadosMeal(sender, e);
        }

        protected void GridTarifasPeriodo_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["PeriodoIDTarifas"] = Convert.ToInt32(GridTarifasPeriodo.SelectedRow.Cells[0].Text);
            //lblTarifaSelecionada.Text = GridTarifasPeriodo.SelectedRow.Cells[1].Text + " a " + GridTarifasPeriodo.SelectedRow.Cells[2].Text;
            //CarregarDadosTarifas(sender, e);
            //CarregarDadosMeal(sender, e);
        }

        protected void RdoCompleteSupplier_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["TipoPesquisaSupplier"] = RdoCompleteSupplier.SelectedValue;
        }

        protected void AtualizaGridPeriodo(object sender, EventArgs e)
        {
            CarregarDadosPeriodos(sender, e);
        }

        protected void AtualizaGridPeriodoBlack(object sender, EventArgs e)
        {
            CarregarDadosPeriodosBlackout(sender, e);
        }

        protected void AtualizaGridsPeriodo_PeriodoBlack(object sender, EventArgs e)
        {
            CarregarDadosPeriodos(sender, e);
            CarregarDadosPeriodosBlackout(sender, e);
            lblMsgGridPeriodos.Text = "";
        }

        protected void AbrirPopUpTarifas(object sender, CommandEventArgs e)
        {
            int myId = Convert.ToInt32(e.CommandArgument);
            Session["PeriodoIDTarifas"] = myId;

            try
            {
                PeriodosDAL p = new PeriodosDAL();
                MoedaDAL m = new MoedaDAL();

                S_Mercado_Periodo d = new S_Mercado_Periodo();
                d = p.ObterPorIdMercado(myId);

                Moeda n = new Moeda();
                n = m.ObterPorId(Convert.ToInt32(d.Moeda_id));

                Dictionary<string, string> dadosTarifa = new Dictionary<string, string>();

                dadosTarifa.Add("Mercado", Convert.ToString(DropMercados.SelectedItem));
                dadosTarifa.Add("Base", Convert.ToString(DropBaseTarifarias.SelectedItem));
                dadosTarifa.Add("Moeda", Convert.ToString(n.Moeda_sigla));

                Dictionary<string, string> dadosPeriodo = new Dictionary<string, string>();

                dadosPeriodo.Add("IdMercado", DropMercados.SelectedValue);
                dadosPeriodo.Add("IdBaseTarifaria", DropBaseTarifarias.SelectedValue);

                Session["IdsPeriodos"] = dadosPeriodo;
                Session["TitulosTarifas"] = dadosTarifa;
            }
            catch (Exception ex)
            {
                lblMsgCadSupplier.Text = ex.Message;
            }

            string script = "";
            script = script + "window.open('AddTarifa.aspx','', " + "'status=1, scrollbars=yes, width=900, height=650, top=0, left=0');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "AddTarifas", script, true);
        }

        protected void AbrirPopUpVerTarifas(object sender, CommandEventArgs e)
        {
            int myId = Convert.ToInt32(e.CommandArgument);
            Session["PeriodoIDTarifasVer"] = myId;

            Dictionary<string, string> dadosPeriodo = new Dictionary<string, string>();

            dadosPeriodo.Add("IdMercado", DropMercados.SelectedValue);
            dadosPeriodo.Add("IdBaseTarifaria", DropBaseTarifarias.SelectedValue);

            Session["IdsPeriodosVer"] = dadosPeriodo;

            string script = "";
            script = script + "window.open('VerTarifasPorPeriodo.aspx','', " + "'status=1, scrollbars=yes, width=790, height=650, top=0, left=0');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Tarifa", script, true);
        }

        protected void AbrirPopUpEditarPeriodo(object sender, CommandEventArgs e)
        {
            int myId = Convert.ToInt32(e.CommandArgument);
            Session["PeriodoIDEditar"] = myId;

            string script = "";
            script = script + "window.open('AddPeriodo.aspx?Tipo=edit','', " + "'status=1, scrollbars=yes, width=450, height=380, top=100, left=250');";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Tarifa", script, true);
        }
        
        protected void ExcluirPeriodosTarifas(object sender, CommandEventArgs e)
        {
            try
            {
                PeriodosDAL p = new PeriodosDAL();

                S_Mercado_Periodo mp = p.ObterPorIdMercado(Convert.ToInt32(e.CommandArgument));
                p.Excluir(mp);

                lblMsgGridPeriodos.Text = "Período excluído com sucesso.";
                CarregarDadosPeriodos(sender, e);
            }
            catch (Exception ex)
            {
                lblMsgGridPeriodos.Text = ex.Message;
                lblMsgGridPeriodos.ForeColor = System.Drawing.Color.Red;
            }

        }

        protected void ExcluirPeriodosTarifasBlackout(object sender, CommandEventArgs e)
        {
            try
            {
                PeriodoBlackDAL p = new PeriodoBlackDAL();

                S_Mercado_Periodo_Black mp = p.ObterPorId(Convert.ToInt32(e.CommandArgument));

                p.Excluir(mp);

                lblMsgGridPeriodos.Text = "Blackout excluído com sucesso.";
                CarregarDadosPeriodosBlackout(sender, e);
            }
            catch (Exception ex)
            {
                lblMsgGridPeriodos.Text = ex.Message;
                lblMsgGridPeriodos.ForeColor = System.Drawing.Color.Red;
            }

        }

        #endregion

        #region Descrições

        protected void Buscadescricao()
        {
            SupplierDAL sd = new SupplierDAL();
            NewTierraEntities con = new NewTierraEntities();

            try
            {
                Supplier s = sd.ObterPorId(Convert.ToInt32(Session["Sid"]));
                
                lblMsgCadDescricao.Text = "";


                if (con.S_Descricao.Any(o => o.S_id == s.S_id))
                {
                    var desc = con.S_Descricao.Where(ds => ds.S_id.Equals(s.S_id)).Single();

                    Session["DescricaoID"] = desc.Desc_id;
                    EditorInfoShort.Content = desc.Desc_short;
                    EditorInfoLong.Content = desc.Desc_long;
                    txtremarks.Text = desc.Desc_remarks;
                    txtInfoCliente.Text = desc.Desc_cliente;
                    txtInfoVoucher.Text = desc.Desc_voucher;

                    if (!Session["DescricaoID"].Equals(""))
                    {
                        btnCadastrarDescricao.Visible = false;
                        btnAtualizarDescricao.Visible = true;
                    }
                }
                else
                {
                    EditorInfoLong.Content = "";
                    EditorInfoShort.Content = "";
                    txtremarks.Text = "";
                    txtInfoVoucher.Text = "";
                    txtInfoCliente.Text = "";
                    btnCadastrarDescricao.Visible = true;
                    btnAtualizarDescricao.Visible = false;
                    Session.Remove("DescricaoID");
                }

            }
            catch (Exception ex)
            {
                lblMsgCadDescricao.Text = "Erro: " + ex.Message;
            }
        }

        protected void CadastrarDescricao(object sender, EventArgs e)
        {
            try
            {
                S_Descricao d = new S_Descricao();

                d.Desc_short = EditorInfoShort.Content;
                d.Desc_long = EditorInfoLong.Content;
                d.Desc_remarks = txtremarks.Text;
                d.Desc_cliente = txtInfoCliente.Text;
                d.Desc_voucher = txtInfoVoucher.Text;
                d.S_id = Convert.ToInt32(Session["Sid"]);

                DescricaoDAL s = new DescricaoDAL();

                s.Salvar(d);
                lblMsgCadDescricao.Text = "Descrição cadastrada com sucesso.";
            }
            catch (Exception ex)
            {
                lblMsgCadDescricao.Text = "Erro :" + ex.Message;
            }
        }

        protected void AtualizarDescricao(object sender, EventArgs e)
        {
            try
            {
                S_Descricao d = new S_Descricao();

                d.Desc_id = Convert.ToInt32(Session["DescricaoID"]);
                d.Desc_short = EditorInfoShort.Content;
                d.Desc_long = EditorInfoLong.Content;
                d.Desc_remarks = txtremarks.Text;
                d.Desc_cliente = txtInfoCliente.Text;
                d.Desc_voucher = txtInfoVoucher.Text;
                d.S_id = Convert.ToInt32(Session["Sid"]);

                DescricaoDAL s = new DescricaoDAL();

                s.Atualizar(d);
                lblMsgCadDescricao.Text = "Descrição atualizada com sucesso.";
            }
            catch (Exception ex)
            {
                lblMsgCadDescricao.Text = "Erro: " + ex.Message;
            }
        }

        protected void ExcluirDescricao(object sender, EventArgs e)
        {
            try
            {
                DescricaoDAL s = new DescricaoDAL();

                S_Descricao d = s.ObterPorId(Convert.ToInt32(Session["DescricaoID"]));

                s.Excluir(d);
                lblMsgCadDescricao.Text = "Descrição excluída com sucesso.";
                LimpaCampos(this.Controls);
            }
            catch (Exception ex)
            {
                lblMsgCadDescricao.Text = "Erro :" + ex.Message;
            }
        }

        protected void LimparDescricao(object sender, EventArgs e)
        {
            LimpaCampos(this.Controls);
        }

        #endregion
       

    }
}